البرمجة

استخدام قوالب Blade في Laravel

استخدام قوالب Blade لإنشاء عروض Laravel: دليل شامل ومفصل

يُعد Laravel أحد أشهر أطر عمل PHP الحديثة وأكثرها استخدامًا لبناء تطبيقات الويب القوية والمرنة. يتميّز Laravel بجملة من الأدوات التي تجعل عملية تطوير الواجهات سهلة ومُنظّمة، من بينها نظام القوالب المدمج المعروف باسم Blade، وهو محرك عرض (Template Engine) قوي وسهل الاستخدام يُعتبر من الركائز الأساسية في البنية المعمارية لواجهة Laravel.

يساهم Blade في فصل منطق التطبيق (Application Logic) عن واجهة المستخدم (Presentation Layer)، مما يعزز مبدأ الفصل بين المهام (Separation of Concerns)، ويجعل الكود أكثر نظافة وسهولة في الصيانة والتطوير المستمر.


ما هو Blade في Laravel؟

Blade هو محرك قوالب بسيط لكنه قوي، مدمج افتراضيًا في إطار عمل Laravel، يتيح للمطورين كتابة واجهات ديناميكية بسهولة من خلال لغة HTML مدمجة بتعليمات Blade الخاصة. يسمح هذا النظام بإنشاء مكونات واجهة تفاعلية تُدار من خلال قواعد Laravel وخدماته، مع إمكانية دمج التعليمات البرمجية الخاصة بـ PHP بشكل مباشر دون الحاجة لفتح وإغلاق علامات .


المزايا الرئيسية لمحرك Blade

يوفر Blade مجموعة من الخصائص التي تميّزه عن محركات القوالب الأخرى في PHP، وأبرز هذه المزايا ما يلي:

  • سهولة الاستخدام والقراءة: يتم استخدام تعليمات بسيطة وسلسة تجعل القالب أكثر وضوحًا من التعليمات التقليدية بلغة PHP.

  • الأداء العالي: يتم تحويل ملفات Blade إلى ملفات PHP عادية تُخزن في الذاكرة المؤقتة (Cache) لتسريع عملية العرض.

  • إمكانية التوريث بين القوالب: يدعم Blade مبدأ التوريث (Template Inheritance) الذي يتيح إنشاء تخطيطات أساسية وإعادة استخدامها في الصفحات المختلفة.

  • دعم الشرطيات والحلقات: يحتوي Blade على صيغة مبسطة للكتابة المنطقية مثل @if, @foreach, @switch وغيرها.

  • المكونات المخصصة: يمكن إنشاء مكونات Blade خاصة reusable Components مما يساعد على إعادة استخدام الكود وتفادي التكرار.

  • الحماية من ثغرات XSS: يستخدم Blade الترميز التلقائي للمخرجات لحماية التطبيق من ثغرات إدخال الشيفرة الضارة.


تركيب واستخدام قوالب Blade في Laravel

1. إنشاء ملفات القوالب

تُخزن جميع قوالب Blade ضمن مجلد resources/views. يتم حفظ كل ملف بلاحقة .blade.php. على سبيل المثال، لإنشاء قالب باسم welcome نستخدم المسار التالي:

bash
resources/views/welcome.blade.php

2. عرض القوالب من خلال Route أو Controller

لعرض قالب Blade من خلال Route مباشرة:

php
Route::get('/', function () { return view('welcome'); });

أو من خلال Controller:

php
class HomeController extends Controller { public function index() { return view('home'); } }

التوريث في Blade (Template Inheritance)

يمثل نظام التوريث حجر الزاوية في Blade، حيث يسمح ببناء قالب أساسي (Layout) يحتوي على الهيكل العام للصفحات مثل الترويسة (Header) والتذييل (Footer) والشريط الجانبي (Sidebar)، ثم يُعاد استخدام هذا القالب في مختلف الصفحات.

إنشاء قالب أساسي:

php
تطبيقي @include('partials.nav')
class="container"> @yield('content') div> @include('partials.footer') body> html>

استخدامه في صفحات فرعية:

php
@extends('layouts.app') @section('content')

مرحباً بك في الصفحة الرئيسية

@endsection

تضمين الملفات (Includes)

لإدراج أجزاء معينة من الصفحة (مثل قائمة التصفح أو الفوتر) يمكن استخدام @include:

php
@include('partials.header') @include('partials.nav') @include('partials.footer')

التحكم في المخرجات

Blade يوفر طريقتين لطباعة المتغيرات:

  1. الطباعة الآمنة (يتم ترميز HTML تلقائيًا):

php
{{ $name }}
  1. الطباعة غير الآمنة (لإظهار HTML):

php
{!! $content !!}

توجيهات التحكم (Control Directives)

Blade يدعم تعليمات برمجية للتحكم بالمنطق بطريقة مبسطة تشبه PHP:

if / elseif / else / endif

php
@if($user->isAdmin())

أنت مدير النظام

@
elseif($user->isEditor())

أنت محرر

@
else

أنت مستخدم عادي

@
endif

for / foreach / while

php
@foreach($posts as $post)

{{ $post->title }}

@
endforeach

توجيهات Blade الأخرى الشائعة

التوجيه الاستخدام
@extends لتوسيع قالب رئيسي
@section لتعريف محتوى القسم
@yield مكان إدراج القسم في القالب الرئيسي
@include تضمين ملفات Blade فرعية
@if/@elseif/@else/@endif تعليمات شرطية
@foreach/@for/@while تعليمات تكرار
@switch/@case/@break حالات شرطية متعددة
@csrf تضمين رمز CSRF في النماذج
@error عرض أخطاء التحقق

استخدام مكونات Blade (Blade Components)

تُعد مكونات Blade طريقة رائعة لإنشاء واجهات قابلة لإعادة الاستخدام، مثل أزرار أو بطاقات أو نماذج.

إنشاء مكوّن:

bash
php artisan make:component Alert

يُنتج ملفين:

  • app/View/Components/Alert.php

  • resources/views/components/alert.blade.php

عرض المكون:

blade

داخل ملف alert.blade.php:

blade
{{ $message }}

إنشاء Slots ديناميكية داخل المكونات

يمكن تمرير محتوى ديناميكي باستخدام slot:

blade
عنوان البطاقة

محتوى البطاقة


استخدام التوجيهات الشرطية المخصصة

يمكن إنشاء توجيهات Blade مخصصة في AppServiceProvider:

php
Blade::if('admin', function () { return auth()->check() && auth()->user()->isAdmin(); });

ثم استخدامها داخل القالب:

blade
@admin

أنت تملك صلاحيات المدير

@endadmin

جدول يوضح مقارنة بين طريقة Blade وPHP التقليدية

المهمة Blade PHP التقليدية
طباعة متغير {{ $var }}
شرط if @if ($a == $b)
حلقة foreach @foreach ($items as $item)
تضمين ملف @include('file')
وراثة قوالب @extends('layout') غير مدعومة تلقائيًا

التخزين المؤقت لقوالب Blade

يتم تحويل جميع قوالب Blade إلى ملفات PHP وتخزينها في المسار التالي:

bash
storage/framework/views

هذا يُحسّن من الأداء ويمنع تكرار معالجة القوالب في كل مرة، ويتم تحديث الملفات المخزنة تلقائيًا عند تعديل ملف Blade الأصلي.


Blade مع Vue.js وLivewire

Blade يمكن دمجه بسهولة مع Vue.js أو Livewire لإضافة واجهات تفاعلية حيوية. يدعم Blade تحميل المكونات عبر CDN أو من خلال Webpack باستخدام Laravel Mix. كما أن Blade متكامل جدًا مع Livewire الذي يسمح ببناء واجهات ديناميكية تعتمد على AJAX دون كتابة جافاسكريبت معقد.


الخلاصة

محرك القوالب Blade في Laravel يوفر بيئة تطوير مرنة ونظيفة لبناء واجهات مستخدم متقدمة ومتماشية مع مبادئ البرمجة الحديثة. يوفر Blade إمكانيات عالية مثل التوريث، والمكونات، وإعادة الاستخدام، والتحكم الكامل في منطق العرض، بالإضافة إلى التكامل السلس مع باقي مكونات Laravel مثل Livewire وInertia.js. الاستخدام الذكي والمحترف لـ Blade يسهم في رفع جودة المشروع وكفاءته وسهولة صيانته.


المراجع:

  1. Laravel Official Documentation – Blade Templates

    https://laravel.com/docs/blade

  2. Laravel News – Blade Tips and Tricks

    https://laravel-news.com/blade-tips